package com.tanhua.server.exception;

import com.tanhua.model.vo.ErrorResult;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;

/**
 * 异常处理器
 *  ControllerAdvice：声明异常处理器
 */
@ControllerAdvice
public class ExceptionAdvice {

    /**
     * 当cotroller抛出异常时，自动执行的方法
     *    返回值和controller一样：ResponseEntity
     *    参数：Exception
     * 配置注解：
     *   @ExceptionHandler：指定此方法处理的异常类型
     */
    @ExceptionHandler(value=Exception.class)
    public ResponseEntity handlerException(Exception e) {
        e.printStackTrace();
        //构建异常数据
        ErrorResult result = ErrorResult.error();
        return ResponseEntity.status(500).body(result);
    }

    //处理自定义的异常
    @ExceptionHandler(value=BusinessException.class)
    public ResponseEntity handlerException(BusinessException be) {
        be.printStackTrace();
        ErrorResult result = be.getErrorResult();
        return ResponseEntity.status(500).body(result);
    }
}
